# -*- coding: utf8-*- # Forelesninger om Programmering i MENA1000. # Forelesning 2: If-forgreininger og L?kker (for-l?kker og while-l?kker) # if-forgreining: *********************************************************** # Vi ?nsker igjen ? beregne ballens h?yde som funksjon av utgangshastighet og tid: # Vi starter med ? definere noen konstanter og variabler: v0 = 5.0 # Utgangshastigheten g = 9.81 # Tyngdeakselerasjonen t = 0.0 # Tiden # S? regner vi ut h?yden: y = v0*t - 0.5*g*t**2 # Vi velger ? skrive ut svaret bare HVIS h?yden er >= 0 ("over bakken"): if y >= 0: print "Med startfart %d er ballen %f meter over bakken etter %f sekunder." %(v0,y,t) print # tom linje else: print "Ballen har landet." # Legg merke til at alt som skal gj?res i en av forgreiningene innrykkes. # Les mer om if-forgreininger og flere muligheter i kompendiet; nyttig og viktig. # L?kker: ****************************************************************** # Vi ?nsker n? ? beregne og skrive ut ballens h?yde ved flere tider i en tabell. # For det bruker vi l?kker der programmet gj?r samme operasjon flere ganger: # while l?kker: ************************************************************ # I programmet som f?lger bruker vi muligheten til ? skrive kommentar til h?yre i programlinjer. # Vi starter med ? definere noen konstanter og variabler: v0 = 5.0 # Utgangshastigheten g = 9.81 # Tyngdeakselerasjonen t = 0.0 # Tiden tider = [t] # En liste over tider. Vi starter med bare starttiden (0) hoyder = [0] # En liste over h?yder. Vi starter med bare starth?yden (0). i = 0 # Tellevariabel for antall ganger vi har g?tt igjennom l?kka # Den teller ogs? indeksen p? listene # Selve while-l?kken. Legg merke til at det som skal gjentas m? innrykkes: while hoyder[i] >= 0: i += 1 # Vi ?ker telle-variablen. Kan ogs? gj?res slik: i = i + 1 tider.append(i*0.1) # Vi legger til et nytt element i tider, og gir det verdien i*0.1 t = tider[i] # Vi henter ut verdien og legger den i t-variabelen. hoyder.append(v0*t -0.5*g*t**2) # Vi regner ut h?yden og legger den i et nytt element i hoyder-listen. print tider print hoyder # Vi bruker deretter en ny while-l?kke til ? lage en pen utskrift: j = 0 n = len(tider) print "|%10s|%10s|" % ("Tid", "H?yde") print "-------------------------------------" while j < n: print "|%10f|%10f|" % (tider[j], hoyder[j]) j += 1 print "-------------------------------------" # for-l?kke: ************************************************************** # en for-l?kke kan gj?re det samme mer elegant: n = len(tider) print "|%10s |%10s|" % ("Tid", "H?yde") print "-------------------------------------" for j in range(n): print "|%10f |%10f|" % (tider[j], hoyder[j]) print "-------------------------------------"